package com.kc.gb.device.common.interfaces;

import com.kc.gb.base.dto.Result;
import com.kc.gb.base.dto.DeviceType;

import java.io.IOException;

public interface IHardware {

    /**
     * 获取设备类型
     * @return
     */
    public DeviceType getDeviceType();


    public boolean isEnabled();
    /**
     * 根据项目初始化配置,判定与硬件的连接情况
     * @return
     */
    public Result<?> isConnected() throws Exception;

    /**
     * 测试连接
     * @param ip
     * @param port
     * @return
     * @throws Exception
     */
    boolean testConnect(String ip, int port) throws Exception;

    /**
     * 根据项目初始化配置,开始连接硬件
     * @return 连接结果会展示在配置界面
     * @throws IOException
     * @throws Exception
     */
    public Result<?> initialize() throws IOException, Exception;

    /**
     * 开始连接后的后续操作
     * @param result
     * @throws Exception
     */
    public void afterInitialize(Result<?> result) throws Exception;

    /**
     * 根据项目初始化配置,断开与硬件的连接
     */
    public void stopConnect() throws Exception;
}
